.. _cmlPmCfgGetSoftLimit: cmlPmCfgGetSoftLimit ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmlPmCfgGetSoftLimit([in] VT_I4 BoardID, [in] VT_I4 NodeId, [in] VT_I4 Channel, [out] VT_PI4 IsEnable, [out] VT_PR8 LimitN, [out] VT_PR8 LimitP ) DESCRIPTION ````````````` - cmlPmCfgGetSoftLimit() 함수는 소프트웨어 리밋(Limit) 활성 상태 및 범위 설정상태를 반환합니다. \ - 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다. PARAMETER ````````````` ▶ BoardID : 사용자가 설정한 디바이스(보드) ID. ▶ NodeId : 사용자가 제어하고자 하는 노드 번호. ▶ Channel : 축 번호. 통합 축으로 관리되는 축 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상, 최대 통합 축 개수 - 1 이하의 값을 축 번호로 설정할 수 있습니다. ▶ IsEnable : 소프트웨어 리밋(Limit) 기능의 활성화 여부를 설정 혹은 반환합니다. ▶ LimitN : (-) 방향 Limit값을 설정 혹은 반환합니다. ▶ LimitP : (+) 방향 Limit값을 설정 혹은 반환합니다. REFERENCE ``````````````` - S/W Limit 의 설정에는 항상 Unit Distance 의 값이 고려되지 않는 상황에서 문제가 발생할 수 있습니다. 만약 설정한 Unit Distance 값이 1000으로 설정되어 있다면, 이 값에 입력된 LimitN 값과 LimitP 값이 28Bit 로 표현할 수 있는 정수 값을 초과해서는 안됩니다. \ - 이 내용을 식으로 표현하면 다음과 같습니다. \ - Unit Distance * S/W Limit Value < 268,435,456(28bit 정수) \ - 위 의미는 결국 Unit Distance 와 S/W Limit 의 변수 값이 28bit 정수보다 작아야 한다는 의미입니다. 본 함수의 인자가 Double 형이라고 할지라도 이 점을 반드시 주의하시기 바랍니다. 만약 이 값이 28Bit 정수보다 크게 되면, 변수의 값이 Overflow 되어 내부에서 Negative Limit 이 Positive Limit 효과를 가져와, 모터의 축이 +/- 방향으로 움직이지 못하는 현상을 발생시킬 수 있습니다. .. warning:: 소프트웨어 Limit 은 논리적으로 하드웨어적인 Limit 과 동일하게 동작합니다. 또한 Negative Limit 과 Positive Limit 값은 Unit Distance 를 고려하여, 입력 값의 Overflow 를 주의해야 합니다. RETURN VALUE ````````````` .. csv-table:: :widths: 10 90 :header-rows: 1 :stub-columns: 0 Value, Meaning 음수, 수행 실패 0(ERR_NONE), 수행 성공 EXAMPLE ``````````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ #include “ComiMLink2_SDK.h” #include “ComiMLink2_SDK_Def.h” long BoardID = 0; long nChannel = 0; long nIsEnable = 0; double fElNeg = 0.0f; double fElPos = 0.0f; //0번 축을 선택합니다. //0번 축의 SoftLimit 기능을 활성화 하고, -EL은 -100000, +EL은 100000으로 설정합니다. cmlPmCfgSetSoftLimit (BoardID, 0, nChannel, cmlTRUE, -100000, 100000 ); //0번 축의 SoftLimit의 설정 상태를 반환합니다. cmlPmCfgGetSoftLimit (BoardID, 0, nChannel, &nIsEnable, &fElNeg, &fElPos );